package com.sc.nft.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sc.nft.enums.PayChannelEnum;
import com.sc.nft.enums.PayMethodEnum;
import com.sc.nft.enums.PayStatusEnum;
import com.sc.nft.enums.PayTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 支付轨迹表DTO
 *
 * @author liGen
 * @version 1.0
 * @date 2023/10/19 2:53 下午
 */
@Data
public class PayOrderPageDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "id")
    private Long id;

    /**
     * 昵称
     */
    @ApiModelProperty("昵称")
    private String nickName;

    /**
     * 手机号
     */
    @ApiModelProperty("手机号")
    private String userTel;

    /**
     * 支付类方式
     */
    @ApiModelProperty(value = "支付类方式")
    private PayMethodEnum payType;

    /**
     * 业务订单号
     */
    @ApiModelProperty(value = "业务订单号")
    private String orderNo;

    /**
     * 订单类型
     */
    @ApiModelProperty(value = "订单类型")
    private PayTypeEnum orderType;

    /**
     * 支付金额
     */
    @ApiModelProperty(value = "支付金额")
    private BigDecimal payAmount;

    /**
     * 退款金额
     */
    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundAmount;

    /**
     * 外部订单号
     */
    @ApiModelProperty(value = "交易订单号")
    private String outTradeNo;

    /**
     * 交易订单号
     */
    @ApiModelProperty(value = "交易订单号")
    private String tradeNo;

    /**
     * 支付渠道
     */
    @ApiModelProperty(value = "支付渠道")
    private PayChannelEnum channel;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态")
    private PayStatusEnum status;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 银行
     */
    @ApiModelProperty(value = "银行")
    private String bankName;

    /**
     * 银行卡号
     */
    @ApiModelProperty(value = "银行卡号")
    private String bankCardNo;
}
